package com.cruise.game.service.admin;

import com.cruise.game.model.vo.common.PageResult;
import com.cruise.game.model.vo.order.OrderDetailVO;
import com.cruise.game.model.vo.order.OrderListVO;

import java.time.LocalDate;
import java.util.Map;

/**
 * 管理员订单服务接口
 *
 * @author cruise
 * @date 2025-02-28
 */
public interface AdminOrderService {

    /**
     * 获取订单列表
     *
     * @param status 订单状态
     * @param keyword 搜索关键词
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param page 页码
     * @param pageSize 每页条数
     * @return 订单列表
     */
    PageResult<OrderListVO> getOrderList(String status, String keyword, LocalDate startDate, LocalDate endDate, Integer page, Integer pageSize);

    /**
     * 获取订单详情
     *
     * @param orderId 订单ID
     * @return 订单详情
     */
    OrderDetailVO getOrderDetail(Long orderId);

    /**
     * 手动分配订单
     *
     * @param orderId 订单ID
     * @param agentId 代理ID
     * @return 是否成功
     */
    boolean assignOrder(Long orderId, Long agentId);

    /**
     * 取消订单
     *
     * @param orderId 订单ID
     * @return 是否成功
     */
    boolean cancelOrder(Long orderId);

    /**
     * 处理售后申请
     *
     * @param orderId 订单ID
     * @param approved 是否同意
     * @param remark 处理备注
     * @return 是否成功
     */
    boolean processAfterSales(Long orderId, Boolean approved, String remark);

    /**
     * A获取当日订单统计
     *
     * @return 统计信息
     */
    Map<String, Object> getTodayOrderStatistics();
}